#include <cstdio>
#include <algorithm>
using namespace std;
const int INF=100000007;
int m[5][5];
char s[5];
int ans=INF;
bool check(){
    int x=m[0][0];
    for(int i=0;i<4;i++){
        for(int j=0;j<4;j++){
            if(x!=m[i][j]){
                return false;
            }
        }
    }
    return true;
}
void operate(int x,int y){
    m[x][y]*=-1;
    if(x>0){
        m[x-1][y]*=-1;
    }
    if(x<3){
        m[x+1][y]*=-1;
    }
    if(y>0){
        m[x][y-1]*=-1;
    }
    if(y<3){
        m[x][y+1]*=-1;
    }
}
int dfs(int x,int y,int t){
    if(check()){
        if(t<ans){
            ans=t;
        }
        return 0;
    }
    if(x>3 || y>3 || x<0 || y<0){
        return 0;
    }
    for(int dx=-1;dx<=1;dx++){
        for(int dy=-1;dy<=1;dy++){
            if((dx==1 || dx==-1) && (dy==1 || dy==-1)|| dx==0 && dy==0){
                continue; 
            }
            printf("%d %d\n",x+dx,y+dy);
            dfs(x+dx,y+dy,t+1);
            operate(x,y);
            printf("dfs %d %d\n",x+dx,y+dy);
        }
    }
    return 0;
}
int main(void){
    for(int i=0;i<4;i++){
        scanf("%s",s);
        for(int j=0;j<4;j++){
            if(s[j]=='b'){
                m[i][j]=1;
            }  
            else{
                m[i][j]=-1;
            }
        }
    }
    for(int i=0;i<4;i++){
        for(int j=0;j<4;j++){
            printf("%d",m[i][j]);
        }
        printf("\n");
    }
    dfs(0,0,0);
    if(ans==INF){
        printf("Impossible\n");
    }
    else{
        printf("%d\n",ans);
    }
    return 0;
}